<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
            "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>



<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META name="GENERATOR" content="hevea 1.08">
<LINK rel="stylesheet" type="text/css" href="tutorial.css">
<TITLE>
Contents
</TITLE>
</HEAD>
<BODY >
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Up"></A>
<A HREF="tutorial002.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
<HR>

<H1 CLASS="chapter">Contents</H1>
<UL CLASS="ftoc1"><LI CLASS="li-toc">
<A HREF="tutorial002.html#htoc1">Chapter&nbsp;1&nbsp;&nbsp;Introduction</A>
<LI CLASS="li-toc"><A HREF="tutorial003.html#htoc2">Chapter&nbsp;2&nbsp;&nbsp;Getting started with ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP></A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial004.html#htoc3">2.1&nbsp;&nbsp;How do I install the ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP> system?</A>
<LI CLASS="li-toc"><A HREF="tutorial005.html#htoc4">2.2&nbsp;&nbsp;How do I read the online documentation?</A>
<LI CLASS="li-toc"><A HREF="tutorial006.html#htoc5">2.3&nbsp;&nbsp;How do I run my ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP> programs?</A>
<LI CLASS="li-toc"><A HREF="tutorial007.html#htoc6">2.4&nbsp;&nbsp;How do I use <TT>tkeclipse</TT>?</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial007.html#htoc7">2.4.1&nbsp;&nbsp;Getting started</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial008.html#htoc8">2.5&nbsp;&nbsp;How do I write an ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP> program?</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial008.html#htoc9">2.5.1&nbsp;&nbsp;Compiling a program</A>
<LI CLASS="li-toc"><A HREF="tutorial008.html#htoc10">2.5.2&nbsp;&nbsp;Executing a query</A>
<LI CLASS="li-toc"><A HREF="tutorial008.html#htoc11">2.5.3&nbsp;&nbsp;Editing a file</A>
<LI CLASS="li-toc"><A HREF="tutorial008.html#htoc12">2.5.4&nbsp;&nbsp;Debugging a program</A>
<LI CLASS="li-toc"><A HREF="tutorial008.html#htoc13">2.5.5&nbsp;&nbsp;File menu</A>
<LI CLASS="li-toc"><A HREF="tutorial008.html#htoc14">2.5.6&nbsp;&nbsp;Getting help</A>
<LI CLASS="li-toc"><A HREF="tutorial008.html#htoc15">2.5.7&nbsp;&nbsp;Other tools</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial009.html#htoc16">2.6&nbsp;&nbsp;How do I make things happen at compile time?</A>
<LI CLASS="li-toc"><A HREF="tutorial010.html#htoc17">2.7&nbsp;&nbsp;How do I use ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP> libraries in my programs?</A>
<LI CLASS="li-toc"><A HREF="tutorial011.html#htoc18">2.8&nbsp;&nbsp;Other tips</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial011.html#htoc19">2.8.1&nbsp;&nbsp;Recommended file names</A>
</UL>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial012.html#htoc20">Chapter&nbsp;3&nbsp;&nbsp;Prolog Introduction</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial013.html#htoc21">3.1&nbsp;&nbsp;Terms and their data types</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial013.html#htoc22">3.1.1&nbsp;&nbsp;Numbers</A>
<LI CLASS="li-toc"><A HREF="tutorial013.html#htoc23">3.1.2&nbsp;&nbsp;Strings</A>
<LI CLASS="li-toc"><A HREF="tutorial013.html#htoc24">3.1.3&nbsp;&nbsp;Atoms</A>
<LI CLASS="li-toc"><A HREF="tutorial013.html#htoc25">3.1.4&nbsp;&nbsp;Lists</A>
<LI CLASS="li-toc"><A HREF="tutorial013.html#htoc26">3.1.5&nbsp;&nbsp;Structures</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial014.html#htoc27">3.2&nbsp;&nbsp;Predicates, Goals and Queries</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial014.html#htoc28">3.2.1&nbsp;&nbsp;Conjunction and Disjunction</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial015.html#htoc29">3.3&nbsp;&nbsp;Unification and Logical Variables</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial015.html#htoc30">3.3.1&nbsp;&nbsp;Symbolic Equality</A>
<LI CLASS="li-toc"><A HREF="tutorial015.html#htoc31">3.3.2&nbsp;&nbsp;Logical Variables</A>
<LI CLASS="li-toc"><A HREF="tutorial015.html#htoc32">3.3.3&nbsp;&nbsp;Unification</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial016.html#htoc33">3.4&nbsp;&nbsp;Defining Your Own Predicates</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial016.html#htoc34">3.4.1&nbsp;&nbsp;Comments</A>
<LI CLASS="li-toc"><A HREF="tutorial016.html#htoc35">3.4.2&nbsp;&nbsp;Clauses and Predicates</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial017.html#htoc36">3.5&nbsp;&nbsp;Execution Scheme</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial017.html#htoc37">3.5.1&nbsp;&nbsp;Resolution</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial018.html#htoc38">3.6&nbsp;&nbsp;Partial data structures</A>
<LI CLASS="li-toc"><A HREF="tutorial019.html#htoc39">3.7&nbsp;&nbsp;More control structures</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial019.html#htoc40">3.7.1&nbsp;&nbsp;Disjunction</A>
<LI CLASS="li-toc"><A HREF="tutorial019.html#htoc41">3.7.2&nbsp;&nbsp;Conditional</A>
<LI CLASS="li-toc"><A HREF="tutorial019.html#htoc42">3.7.3&nbsp;&nbsp;Call</A>
<LI CLASS="li-toc"><A HREF="tutorial019.html#htoc43">3.7.4&nbsp;&nbsp;All Solutions</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial020.html#htoc44">3.8&nbsp;&nbsp;Using Cut</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial020.html#htoc45">3.8.1&nbsp;&nbsp;Commit to current clause</A>
<LI CLASS="li-toc"><A HREF="tutorial020.html#htoc46">3.8.2&nbsp;&nbsp;Prune alternative solutions</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial021.html#htoc47">3.9&nbsp;&nbsp;Common Pitfalls</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial021.html#htoc48">3.9.1&nbsp;&nbsp;Unification works both ways</A>
<LI CLASS="li-toc"><A HREF="tutorial021.html#htoc49">3.9.2&nbsp;&nbsp;Unexpected backtracking</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial022.html#htoc50">3.10&nbsp;&nbsp;Exercises</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial023.html#htoc51">Chapter&nbsp;4&nbsp;&nbsp;ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP> Programming</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial024.html#htoc52">4.1&nbsp;&nbsp;Structure Notation</A>
<LI CLASS="li-toc"><A HREF="tutorial025.html#htoc53">4.2&nbsp;&nbsp;Loops</A>
<LI CLASS="li-toc"><A HREF="tutorial026.html#htoc54">4.3&nbsp;&nbsp;Working with Arrays of Items</A>
<LI CLASS="li-toc"><A HREF="tutorial027.html#htoc55">4.4&nbsp;&nbsp;Storing Information Across Backtracking</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial027.html#htoc56">4.4.1&nbsp;&nbsp;Bags</A>
<LI CLASS="li-toc"><A HREF="tutorial027.html#htoc57">4.4.2&nbsp;&nbsp;Shelves</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial028.html#htoc58">4.5&nbsp;&nbsp;Input and Output</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial028.html#htoc59">4.5.1&nbsp;&nbsp;Printing ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP> Terms</A>
<LI CLASS="li-toc"><A HREF="tutorial028.html#htoc60">4.5.2&nbsp;&nbsp;Reading ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP> Terms</A>
<LI CLASS="li-toc"><A HREF="tutorial028.html#htoc61">4.5.3&nbsp;&nbsp;Formatted Output</A>
<LI CLASS="li-toc"><A HREF="tutorial028.html#htoc62">4.5.4&nbsp;&nbsp;Streams</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial029.html#htoc63">4.6&nbsp;&nbsp;Matching</A>
<LI CLASS="li-toc"><A HREF="tutorial030.html#htoc64">4.7&nbsp;&nbsp;List processing</A>
<LI CLASS="li-toc"><A HREF="tutorial031.html#htoc65">4.8&nbsp;&nbsp;String processing</A>
<LI CLASS="li-toc"><A HREF="tutorial032.html#htoc66">4.9&nbsp;&nbsp;Term processing</A>
<LI CLASS="li-toc"><A HREF="tutorial033.html#htoc67">4.10&nbsp;&nbsp;Module System</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial033.html#htoc68">4.10.1&nbsp;&nbsp;Overview</A>
<LI CLASS="li-toc"><A HREF="tutorial033.html#htoc69">4.10.2&nbsp;&nbsp;Making a Module</A>
<LI CLASS="li-toc"><A HREF="tutorial033.html#htoc70">4.10.3&nbsp;&nbsp;Using a Module</A>
<LI CLASS="li-toc"><A HREF="tutorial033.html#htoc71">4.10.4&nbsp;&nbsp;Qualified Goals</A>
<LI CLASS="li-toc"><A HREF="tutorial033.html#htoc72">4.10.5&nbsp;&nbsp;Exporting items other than Predicates</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial034.html#htoc73">4.11&nbsp;&nbsp;Exception Handling</A>
<LI CLASS="li-toc"><A HREF="tutorial035.html#htoc74">4.12&nbsp;&nbsp;Time and Memory</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial035.html#htoc75">4.12.1&nbsp;&nbsp;Timing</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial036.html#htoc76">4.13&nbsp;&nbsp;Exercises</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial037.html#htoc77">Chapter&nbsp;5&nbsp;&nbsp;A Tutorial Tour of Debugging in TkECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP></A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial038.html#htoc78">5.1&nbsp;&nbsp;The Buggy Program</A>
<LI CLASS="li-toc"><A HREF="tutorial039.html#htoc79">5.2&nbsp;&nbsp;Running the Program</A>
<LI CLASS="li-toc"><A HREF="tutorial040.html#htoc80">5.3&nbsp;&nbsp;Debugging the Program</A>
<LI CLASS="li-toc"><A HREF="tutorial041.html#htoc81">5.4&nbsp;&nbsp;Summary</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial041.html#htoc82">5.4.1&nbsp;&nbsp;TkECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP> toplevel</A>
<LI CLASS="li-toc"><A HREF="tutorial041.html#htoc83">5.4.2&nbsp;&nbsp;Predicate Browser</A>
<LI CLASS="li-toc"><A HREF="tutorial041.html#htoc84">5.4.3&nbsp;&nbsp;Delayed Goals Viewer</A>
<LI CLASS="li-toc"><A HREF="tutorial041.html#htoc85">5.4.4&nbsp;&nbsp;Tracer</A>
<LI CLASS="li-toc"><A HREF="tutorial041.html#htoc86">5.4.5&nbsp;&nbsp;Tracer Filter</A>
<LI CLASS="li-toc"><A HREF="tutorial041.html#htoc87">5.4.6&nbsp;&nbsp;Term Inspector</A>
</UL>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial042.html#htoc88">Chapter&nbsp;6&nbsp;&nbsp;Program Analysis</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial043.html#htoc89">6.1&nbsp;&nbsp;What tools are available?</A>
<LI CLASS="li-toc"><A HREF="tutorial044.html#htoc90">6.2&nbsp;&nbsp;Profiler</A>
<LI CLASS="li-toc"><A HREF="tutorial045.html#htoc91">6.3&nbsp;&nbsp;Line coverage</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial045.html#htoc92">6.3.1&nbsp;&nbsp;Compilation</A>
<LI CLASS="li-toc"><A HREF="tutorial045.html#htoc93">6.3.2&nbsp;&nbsp;Results</A>
</UL>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial046.html#htoc94">Chapter&nbsp;7&nbsp;&nbsp;An Overview of the Constraint Libraries</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial047.html#htoc95">7.1&nbsp;&nbsp;Introduction</A>
<LI CLASS="li-toc"><A HREF="tutorial048.html#htoc96">7.2&nbsp;&nbsp;Implementations of Domains and Constraints</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial048.html#htoc97">7.2.1&nbsp;&nbsp;Suspended Goals: <EM>suspend</EM></A>
<LI CLASS="li-toc"><A HREF="tutorial048.html#htoc98">7.2.2&nbsp;&nbsp;Interval Solver: <EM>ic</EM></A>
<LI CLASS="li-toc"><A HREF="tutorial048.html#htoc99">7.2.3&nbsp;&nbsp;Global Constraints: <EM>ic_global</EM></A>
<LI CLASS="li-toc"><A HREF="tutorial048.html#htoc100">7.2.4&nbsp;&nbsp;Scheduling Constraints: <EM>ic_cumulative, ic_edge_finder</EM></A>
<LI CLASS="li-toc"><A HREF="tutorial048.html#htoc101">7.2.5&nbsp;&nbsp;Finite Integer Sets: <EM>ic_sets</EM></A>
<LI CLASS="li-toc"><A HREF="tutorial048.html#htoc102">7.2.6&nbsp;&nbsp;Linear Constraints: <EM>eplex</EM></A>
<LI CLASS="li-toc"><A HREF="tutorial048.html#htoc103">7.2.7&nbsp;&nbsp;Constraints over symbols: <EM>ic_symbolic</EM></A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial049.html#htoc104">7.3&nbsp;&nbsp;User-Defined Constraints</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial049.html#htoc105">7.3.1&nbsp;&nbsp;Generalised Propagation: <EM>propia</EM></A>
<LI CLASS="li-toc"><A HREF="tutorial049.html#htoc106">7.3.2&nbsp;&nbsp;Constraint Handling Rules: <EM>ech</EM></A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial050.html#htoc107">7.4&nbsp;&nbsp;Search and Optimisation Support</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial050.html#htoc108">7.4.1&nbsp;&nbsp;Tree Search Methods: <EM>ic_search</EM></A>
<LI CLASS="li-toc"><A HREF="tutorial050.html#htoc109">7.4.2&nbsp;&nbsp;Optimisation: <EM>branch_and_bound</EM></A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial051.html#htoc110">7.5&nbsp;&nbsp;Hybridisation Support</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial051.html#htoc111">7.5.1&nbsp;&nbsp;Repair and Local Search: <EM>repair</EM></A>
<LI CLASS="li-toc"><A HREF="tutorial051.html#htoc112">7.5.2&nbsp;&nbsp;Hybrid: <EM>ic_probing_for_scheduling</EM></A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial052.html#htoc113">7.6&nbsp;&nbsp;Other Libraries</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial053.html#htoc114">Chapter&nbsp;8&nbsp;&nbsp;Getting started with Interval Constraints</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial054.html#htoc115">8.1&nbsp;&nbsp;Using the Interval Constraints Library</A>
<LI CLASS="li-toc"><A HREF="tutorial055.html#htoc116">8.2&nbsp;&nbsp;Structure of a Constraint Program</A>
<LI CLASS="li-toc"><A HREF="tutorial056.html#htoc117">8.3&nbsp;&nbsp;Modelling</A>
<LI CLASS="li-toc"><A HREF="tutorial057.html#htoc118">8.4&nbsp;&nbsp;Built-in Constraints</A>
<LI CLASS="li-toc"><A HREF="tutorial058.html#htoc119">8.5&nbsp;&nbsp;Global constraints</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial058.html#htoc120">8.5.1&nbsp;&nbsp;Different strengths of propagation</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial059.html#htoc121">8.6&nbsp;&nbsp;Simple User-defined Constraints</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial059.html#htoc122">8.6.1&nbsp;&nbsp;Using Reified Constraints</A>
<LI CLASS="li-toc"><A HREF="tutorial059.html#htoc123">8.6.2&nbsp;&nbsp;Using Propia</A>
<LI CLASS="li-toc"><A HREF="tutorial059.html#htoc124">8.6.3&nbsp;&nbsp;Using the <EM>element</EM> Constraint</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial060.html#htoc125">8.7&nbsp;&nbsp;Searching for Feasible Solutions</A>
<LI CLASS="li-toc"><A HREF="tutorial061.html#htoc126">8.8&nbsp;&nbsp;Bin Packing</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial061.html#htoc127">8.8.1&nbsp;&nbsp;Problem Definition</A>
<LI CLASS="li-toc"><A HREF="tutorial061.html#htoc128">8.8.2&nbsp;&nbsp;Problem Model - Using Structures</A>
<LI CLASS="li-toc"><A HREF="tutorial061.html#htoc129">8.8.3&nbsp;&nbsp; Handling an Unknown Number of Bins</A>
<LI CLASS="li-toc"><A HREF="tutorial061.html#htoc130">8.8.4&nbsp;&nbsp;Constraints on a Single Bin</A>
<LI CLASS="li-toc"><A HREF="tutorial061.html#htoc131">8.8.5&nbsp;&nbsp;Symmetry Constraints</A>
<LI CLASS="li-toc"><A HREF="tutorial061.html#htoc132">8.8.6&nbsp;&nbsp;Search</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial062.html#htoc133">8.9&nbsp;&nbsp;Exercises</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial063.html#htoc134">Chapter&nbsp;9&nbsp;&nbsp;Working with real numbers and variables</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial064.html#htoc135">9.1&nbsp;&nbsp;Real number basics</A>
<LI CLASS="li-toc"><A HREF="tutorial065.html#htoc136">9.2&nbsp;&nbsp;Issues to be aware of when using bounded reals</A>
<LI CLASS="li-toc"><A HREF="tutorial066.html#htoc137">9.3&nbsp;&nbsp;IC as a solver for real variables</A>
<LI CLASS="li-toc"><A HREF="tutorial067.html#htoc138">9.4&nbsp;&nbsp;Finding solutions of real constraints</A>
<LI CLASS="li-toc"><A HREF="tutorial068.html#htoc139">9.5&nbsp;&nbsp;A larger example</A>
<LI CLASS="li-toc"><A HREF="tutorial069.html#htoc140">9.6&nbsp;&nbsp;Exercise</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial070.html#htoc141">Chapter&nbsp;10&nbsp;&nbsp;The Integer Sets Library</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial071.html#htoc142">10.1&nbsp;&nbsp;Why Sets</A>
<LI CLASS="li-toc"><A HREF="tutorial072.html#htoc143">10.2&nbsp;&nbsp;Finite Sets of Integers</A>
<LI CLASS="li-toc"><A HREF="tutorial073.html#htoc144">10.3&nbsp;&nbsp;Set Variables</A>
<LI CLASS="li-toc"><A HREF="tutorial074.html#htoc145">10.4&nbsp;&nbsp;Constraints</A>
<LI CLASS="li-toc"><A HREF="tutorial075.html#htoc146">10.5&nbsp;&nbsp;Search Support</A>
<LI CLASS="li-toc"><A HREF="tutorial076.html#htoc147">10.6&nbsp;&nbsp;Example</A>
<LI CLASS="li-toc"><A HREF="tutorial077.html#htoc148">10.7&nbsp;&nbsp;Weight Constraints</A>
<LI CLASS="li-toc"><A HREF="tutorial078.html#htoc149">10.8&nbsp;&nbsp;Exercises</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial079.html#htoc150">Chapter&nbsp;11&nbsp;&nbsp;Problem Modelling</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial080.html#htoc151">11.1&nbsp;&nbsp;Constraint Logic Programming</A>
<LI CLASS="li-toc"><A HREF="tutorial081.html#htoc152">11.2&nbsp;&nbsp;Issues in Problem Modelling</A>
<LI CLASS="li-toc"><A HREF="tutorial082.html#htoc153">11.3&nbsp;&nbsp;Modelling with CLP and ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP></A>
<LI CLASS="li-toc"><A HREF="tutorial083.html#htoc154">11.4&nbsp;&nbsp;Same Problem - Different Model</A>
<LI CLASS="li-toc"><A HREF="tutorial084.html#htoc155">11.5&nbsp;&nbsp;Rules for Modelling Code</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial084.html#htoc156">11.5.1&nbsp;&nbsp;Disjunctions</A>
<LI CLASS="li-toc"><A HREF="tutorial084.html#htoc157">11.5.2&nbsp;&nbsp;Conditionals</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial085.html#htoc158">11.6&nbsp;&nbsp;Symmetries</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial086.html#htoc159">Chapter&nbsp;12&nbsp;&nbsp;Tree Search Methods</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial087.html#htoc160">12.1&nbsp;&nbsp;Introduction</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial087.html#htoc161">12.1.1&nbsp;&nbsp;Overview of Search Methods</A>
<LI CLASS="li-toc"><A HREF="tutorial087.html#htoc162">12.1.2&nbsp;&nbsp;Optimisation and Search</A>
<LI CLASS="li-toc"><A HREF="tutorial087.html#htoc163">12.1.3&nbsp;&nbsp;Heuristics</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial088.html#htoc164">12.2&nbsp;&nbsp;Complete Tree Search with Heuristics</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial088.html#htoc165">12.2.1&nbsp;&nbsp;Search Trees</A>
<LI CLASS="li-toc"><A HREF="tutorial088.html#htoc166">12.2.2&nbsp;&nbsp;Variable Selection</A>
<LI CLASS="li-toc"><A HREF="tutorial088.html#htoc167">12.2.3&nbsp;&nbsp;Value Selection</A>
<LI CLASS="li-toc"><A HREF="tutorial088.html#htoc168">12.2.4&nbsp;&nbsp;Example</A>
<LI CLASS="li-toc"><A HREF="tutorial088.html#htoc169">12.2.5&nbsp;&nbsp;Counting Backtracks</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial089.html#htoc170">12.3&nbsp;&nbsp;Incomplete Tree Search</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial089.html#htoc171">12.3.1&nbsp;&nbsp;First Solution</A>
<LI CLASS="li-toc"><A HREF="tutorial089.html#htoc172">12.3.2&nbsp;&nbsp;Bounded Backtrack Search</A>
<LI CLASS="li-toc"><A HREF="tutorial089.html#htoc173">12.3.3&nbsp;&nbsp;Depth Bounded Search</A>
<LI CLASS="li-toc"><A HREF="tutorial089.html#htoc174">12.3.4&nbsp;&nbsp;Credit Search</A>
<LI CLASS="li-toc"><A HREF="tutorial089.html#htoc175">12.3.5&nbsp;&nbsp;Timeout</A>
<LI CLASS="li-toc"><A HREF="tutorial089.html#htoc176">12.3.6&nbsp;&nbsp;Limited Discrepancy Search</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial090.html#htoc177">12.4&nbsp;&nbsp;Exercises</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial091.html#htoc178">Chapter&nbsp;13&nbsp;&nbsp;Repair and Local Search</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial092.html#htoc179">13.1&nbsp;&nbsp;Motivation</A>
<LI CLASS="li-toc"><A HREF="tutorial093.html#htoc180">13.2&nbsp;&nbsp;Syntax</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial093.html#htoc181">13.2.1&nbsp;&nbsp;Setting and Getting Tentative Values</A>
<LI CLASS="li-toc"><A HREF="tutorial093.html#htoc182">13.2.2&nbsp;&nbsp;Building and Accessing Conflict Sets</A>
<LI CLASS="li-toc"><A HREF="tutorial093.html#htoc183">13.2.3&nbsp;&nbsp;Propagating Conflicts</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial094.html#htoc184">13.3&nbsp;&nbsp;Repairing Conflicts</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial094.html#htoc185">13.3.1&nbsp;&nbsp;Combining Repair with IC Propagation</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial095.html#htoc186">13.4&nbsp;&nbsp;Introduction to Local Search</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial095.html#htoc187">13.4.1&nbsp;&nbsp;Changing Tentative Values</A>
<LI CLASS="li-toc"><A HREF="tutorial095.html#htoc188">13.4.2&nbsp;&nbsp;Hill Climbing</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial096.html#htoc189">13.5&nbsp;&nbsp;More Advanced Local Search Methods</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial096.html#htoc190">13.5.1&nbsp;&nbsp;The Knapsack Example</A>
<LI CLASS="li-toc"><A HREF="tutorial096.html#htoc191">13.5.2&nbsp;&nbsp;Search Code Schema</A>
<LI CLASS="li-toc"><A HREF="tutorial096.html#htoc192">13.5.3&nbsp;&nbsp;Random walk</A>
<LI CLASS="li-toc"><A HREF="tutorial096.html#htoc193">13.5.4&nbsp;&nbsp;Simulated Annealing</A>
<LI CLASS="li-toc"><A HREF="tutorial096.html#htoc194">13.5.5&nbsp;&nbsp;Tabu Search</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial097.html#htoc195">13.6&nbsp;&nbsp;Repair Exercise</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial098.html#htoc196">Chapter&nbsp;14&nbsp;&nbsp;Implementing Constraints</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial099.html#htoc197">14.1&nbsp;&nbsp;What is a Constraint in Logic Programming?</A>
<LI CLASS="li-toc"><A HREF="tutorial100.html#htoc198">14.2&nbsp;&nbsp;Background: Constraint Satisfaction Problems</A>
<LI CLASS="li-toc"><A HREF="tutorial101.html#htoc199">14.3&nbsp;&nbsp;Constraint Behaviours</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial101.html#htoc200">14.3.1&nbsp;&nbsp;Consistency Check</A>
<LI CLASS="li-toc"><A HREF="tutorial101.html#htoc201">14.3.2&nbsp;&nbsp;Forward Checking</A>
<LI CLASS="li-toc"><A HREF="tutorial101.html#htoc202">14.3.3&nbsp;&nbsp;Domain (Arc) Consistency</A>
<LI CLASS="li-toc"><A HREF="tutorial101.html#htoc203">14.3.4&nbsp;&nbsp;Bounds Consistency</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial102.html#htoc204">14.4&nbsp;&nbsp;Programming Basic Behaviours</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial102.html#htoc205">14.4.1&nbsp;&nbsp;Consistency Check</A>
<LI CLASS="li-toc"><A HREF="tutorial102.html#htoc206">14.4.2&nbsp;&nbsp;Forward Checking</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial103.html#htoc207">14.5&nbsp;&nbsp;Basic Suspension Facility</A>
<LI CLASS="li-toc"><A HREF="tutorial104.html#htoc208">14.6&nbsp;&nbsp;A Bounds-Consistent IC constraint</A>
<LI CLASS="li-toc"><A HREF="tutorial105.html#htoc209">14.7&nbsp;&nbsp;Using a Demon</A>
<LI CLASS="li-toc"><A HREF="tutorial106.html#htoc210">14.8&nbsp;&nbsp;Exercises</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial107.html#htoc211">Chapter&nbsp;15&nbsp;&nbsp;Propia and CHR</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial108.html#htoc212">15.1&nbsp;&nbsp;Two Ways of Specifying Constraint Behaviours</A>
<LI CLASS="li-toc"><A HREF="tutorial109.html#htoc213">15.2&nbsp;&nbsp;The Role of Propia and CHR in Problem Modelling</A>
<LI CLASS="li-toc"><A HREF="tutorial110.html#htoc214">15.3&nbsp;&nbsp;Propia</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial110.html#htoc215">15.3.1&nbsp;&nbsp;How to Use Propia</A>
<LI CLASS="li-toc"><A HREF="tutorial110.html#htoc216">15.3.2&nbsp;&nbsp;Propia Implementation</A>
<LI CLASS="li-toc"><A HREF="tutorial110.html#htoc217">15.3.3&nbsp;&nbsp;Propia and Related Techniques</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial111.html#htoc218">15.4&nbsp;&nbsp;CHR</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial111.html#htoc219">15.4.1&nbsp;&nbsp;How to Use CHR</A>
<LI CLASS="li-toc"><A HREF="tutorial111.html#htoc220">15.4.2&nbsp;&nbsp;Multiple Heads</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial112.html#htoc221">15.5&nbsp;&nbsp;A Complete Example of a CHR File</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial112.html#htoc222">15.5.1&nbsp;&nbsp;CHR Implementation</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial113.html#htoc223">15.6&nbsp;&nbsp;Global Reasoning</A>
<LI CLASS="li-toc"><A HREF="tutorial114.html#htoc224">15.7&nbsp;&nbsp;Propia and CHR Exercise</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial115.html#htoc225">Chapter&nbsp;16&nbsp;&nbsp;The Eplex Library</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial116.html#htoc226">16.1&nbsp;&nbsp;Introduction</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial116.html#htoc227">16.1.1&nbsp;&nbsp;What is Mathematical Programming?</A>
<LI CLASS="li-toc"><A HREF="tutorial116.html#htoc228">16.1.2&nbsp;&nbsp;Why interface to Mathematical Programming solvers?</A>
<LI CLASS="li-toc"><A HREF="tutorial116.html#htoc229">16.1.3&nbsp;&nbsp;Example formulation of an MP Problem</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial117.html#htoc230">16.2&nbsp;&nbsp;How to load the library</A>
<LI CLASS="li-toc"><A HREF="tutorial118.html#htoc231">16.3&nbsp;&nbsp;Modelling MP problems in ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP></A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial118.html#htoc232">16.3.1&nbsp;&nbsp;Eplex instance</A>
<LI CLASS="li-toc"><A HREF="tutorial118.html#htoc233">16.3.2&nbsp;&nbsp;Example modelling of an MP problem in ECL<SUP><I>i</I></SUP>PS<SUP><I>e</I></SUP></A>
<LI CLASS="li-toc"><A HREF="tutorial118.html#htoc234">16.3.3&nbsp;&nbsp;Getting more solution information from the solver</A>
<LI CLASS="li-toc"><A HREF="tutorial118.html#htoc235">16.3.4&nbsp;&nbsp;Adding integrality constraints</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial119.html#htoc236">16.4&nbsp;&nbsp;Repeated Solving of an Eplex Problem</A>
<LI CLASS="li-toc"><A HREF="tutorial120.html#htoc237">16.5&nbsp;&nbsp;Exercise</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial121.html#htoc238">Chapter&nbsp;17&nbsp;&nbsp;Building Hybrid Algorithms</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial122.html#htoc239">17.1&nbsp;&nbsp;Combining Domains and Linear Constraints</A>
<LI CLASS="li-toc"><A HREF="tutorial123.html#htoc240">17.2&nbsp;&nbsp;Reasons for Combining Solvers</A>
<LI CLASS="li-toc"><A HREF="tutorial124.html#htoc241">17.3&nbsp;&nbsp;A Simple Example</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial124.html#htoc242">17.3.1&nbsp;&nbsp;Problem Definition</A>
<LI CLASS="li-toc"><A HREF="tutorial124.html#htoc243">17.3.2&nbsp;&nbsp;Program to Determine Satisfiability</A>
<LI CLASS="li-toc"><A HREF="tutorial124.html#htoc244">17.3.3&nbsp;&nbsp;Program Performing Optimisation</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial125.html#htoc245">17.4&nbsp;&nbsp;Sending Constraints to Multiple Solvers</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial125.html#htoc246">17.4.1&nbsp;&nbsp;Syntax and Motivation</A>
<LI CLASS="li-toc"><A HREF="tutorial125.html#htoc247">17.4.2&nbsp;&nbsp;Handling Booleans with Linear Constraints</A>
<LI CLASS="li-toc"><A HREF="tutorial125.html#htoc248">17.4.3&nbsp;&nbsp;Handling Disjunctions</A>
<LI CLASS="li-toc"><A HREF="tutorial125.html#htoc249">17.4.4&nbsp;&nbsp;A More Realistic Example</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial126.html#htoc250">17.5&nbsp;&nbsp;Using Values Returned from the Linear Optimum</A>
<UL CLASS="ftoc3"><LI CLASS="li-toc">
<A HREF="tutorial126.html#htoc251">17.5.1&nbsp;&nbsp;Reduced Costs</A>
<LI CLASS="li-toc"><A HREF="tutorial126.html#htoc252">17.5.2&nbsp;&nbsp;Probing</A>
<LI CLASS="li-toc"><A HREF="tutorial126.html#htoc253">17.5.3&nbsp;&nbsp;Probing for Scheduling</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial127.html#htoc254">17.6&nbsp;&nbsp;Other Hybridisation Forms</A>
<LI CLASS="li-toc"><A HREF="tutorial128.html#htoc255">17.7&nbsp;&nbsp;References</A>
<LI CLASS="li-toc"><A HREF="tutorial129.html#htoc256">17.8&nbsp;&nbsp;Hybrid Exercise</A>
</UL>
<LI CLASS="li-toc"><A HREF="tutorial130.html#htoc257">Chapter&nbsp;18&nbsp;&nbsp;The Colgen Library</A>
<UL CLASS="ftoc2"><LI CLASS="li-toc">
<A HREF="tutorial131.html#htoc258">18.1&nbsp;&nbsp;The LP Model</A>
<LI CLASS="li-toc"><A HREF="tutorial132.html#htoc259">18.2&nbsp;&nbsp;The Hybrid Colgen Model</A>
</UL>
</UL>

<HR>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Up"></A>
<A HREF="tutorial002.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
</BODY>
</HTML>
